/**
 * form工具js类库
 */


/**
 * form和jquery对象直接快速转换
 * @param formObj的jquery对象
 * @return obj form数据对象
 */
(function($){
    //获取form值
    $.fn.getForm=function(){
        var serializeObj={};
        var array=$(this).serializeArray();
        $.each(array,function (index, item) {
            serializeObj[item.name] = item.value;
        });
        return serializeObj;
    };

    //form验证
    $.fn.formVerify = function () {
        $('.formInputBlock span').remove();
        var key,tagName,required,regexVal,regexStr;
        var verify = true;
        var values = $(this).serializeArray();
        $.each(values,function (i, item) {
            key = item.name;
            $("[name='"+key+"'],[name='"+key+"[]']").each(function () {
                tagName = $(this)[0].tagName;
                required = $(this).attr('required');
                //参数必须要有，否则验证不通过
                if(required && required!='false' && (!item.value || item.value == "")){
                    $(this).parent().append('<span style="color: red;">内容不能为空！</span>');
                    verify = false;
                } else {
                    regexVal = $(this).attr('regex');
                    if(regexVal && regexVal!=''){
                        regexStr = regexVerify[regexVal];
                        if(!regexStr || regexStr==''){
                            regexStr = regexVal;
                        }
                        var regex = new RegExp(regexStr);
                        if(!regex.test(item.value)){
                            $(this).parent().append('<span style="color: red;">内容格式不正确！</span>');
                            $(this).append('<span style="color: red;">内容格式不正确！</span>');
                            verify = false;
                        }
                    }
                }
            });
        });
        return verify;
    };

    //将json对象转换为form表单
    $.fn.setForm=function(obj){
        var key,value,tagName,type,arr;
        for(x in obj){
            key = x;
            value = obj[x];
            $("[name='"+key+"'],[name='"+key+"[]']").each(function () {
                tagName = $(this)[0].tagName;
                type = $(this).attr('type');
                if(tagName == 'INPUT'){
                    if(type=='radio'){
                        $(this).attr('checked',$(this).val()==value);
                    } else if(type=='checkbox'){
                        arr=value.split(',');
                        for(var i=0;i<arr.length;i++){
                            if($(this).val()==arr[i]){
                                $(this).attr('checked',true);
                                break;
                            }
                        }
                    }else{
                        $(this).val(value);
                    }
                } else if(tagName=='SELECT' || tagName=="TEXTAREA"){
                    $(this).val(value);
                }
            });
        }
    };
})(jQuery);

regexVerify={
    ip:"/^[0-9.]{1.20}$/",
    intZheng:"/^[0-9]*[1-9][0-9]*$", //正整数
    intFeiFu:"/^[0-9.]{1,20}$/",//非负整数
    intFeiZheng:"^((-\\d+)|(0+))$",//非正整数(负数+0)
    intFu:"^-[0-9]*[1-9][0-9]*$",//负整数
    int:"^-?\\d+$",//整数
    floatFeifu:"^\\d+(\\.\\d+)?$",
    floatZheng:"^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$",
    floatFeiZheng:"^((-\\d+(\\.\\d+)?)|(0+(\\.0+)?))$",
    float:"^(-?\\d+)(\\.\\d+)?$",
    azAZ:"^[A-Za-z]+$",//由26个字母组成的字符串
    AZ:"^[A-Z]+$",
    az:"^[a-z]+$",
    azAZ09:"^[A-Za-z0-9]+$",
    azAZ09_:"^[A-Za-z0-9_]+$",
    email:"^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$",
    url:"^[a-zA-Z]+://(\\w+(-\\w+)*)(\\.(\\w+)*))*(\\?\\S*)?$",
    phone:"^1[34578]\\d{9}$",
    id_card:"(^\\d{15}$)|(^\\d{18}$)|(^\\d{17}(\\d|X|x)$)",
};

